package com.github.aloxc.plugin.restplus.listener;

import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;

import java.util.Arrays;

import static com.intellij.openapi.actionSystem.CommonDataKeys.PSI_FILE;

/**
 * 右键处理
 */
public interface IRightClickHandler {

    /**
     * 获取当前模块
     * @return
     */
    default Module getCurrentModule(AnActionEvent e){
        Project project = e.getProject();
        PsiFile psiFile = (PsiFile) e.getData(PSI_FILE);
        final String filePath = psiFile.getVirtualFile().getPath();
        Module[] modules = ModuleManager.getInstance(project).getModules();
        return Arrays.stream(modules).filter(module -> {
            String modulePath = module.getModuleFile().getParent().getPath();
            return filePath.contains(modulePath);
        }).sorted((m1, m2) ->
                m2.getModuleFile().getParent().getPath().length() - m1.getModuleFile().getParent().getPath().length()
        ).limit(1).findFirst().orElse(null);
    }
}
